Macからtabcmdを使用する #tableau
はじめに
こんにちは。大阪オフィスのDI部メンバー、tamaです。
Tableau Serverには「tabcmd」というコマンドラインツールがあります。
Tableau ServerのWeb画面から行える操作を、コマンドでも実行できる…というのがtabcmdでして、これはTableau Serverがインストールされているサーバーに入らないとできないというわけではなく、遠隔からコマンドを実行することができます。しかし…
残念ながら、Mac向けのインストーラーはありません。tabcmdを使うためにはwindowsかlinux環境を別途用意しないといけないのか…。
と諦めてしまいそうですが、実はMacからでもtabcmdを実行する方法があるので、今回はそれをご紹介します。(内容的には小ネタです)
数年前から方法は存在していた…?
実は、数年前に同じような話題が下記Communityで発生していました。
また、上記をもとに方法をまとめた記事もあります。
当初、このエントリは上記の内容を試してみる内容にする予定だったのですが、Tableau Serverのバージョンが記事の時のものと現在のものとで結構な差があるため、全くうまくいきませんでした。
しかし、この記事の執筆者が別の方法を考案されていたので、今回はそちらの方を自分の環境で試してみたいと思います。
環境
Tableau Server
- Tableau Server 2018.2.1
- Windows Server 2016
Mac
- macOS High Sierra 10.13.6
tabcmdの準備
Linux版のtabcmdをダウンロードする
下記から、Tableau Serverと同じバージョンのtabcmdをダウンロードします。
ちなみに、今回Tableau Server側は「2018.2.1」で、tabcmdの最新版は「2018.2」でしたが、使用にあたって問題はありませんでした。
ということで、2018.2のページへ行き、linux版をダウンロードします。tableau-tabcmd-2018-2-0_all.deb というファイルをダウンロードしましょう。
ダウンロードしたdebファイルを展開してスクリプトを入手する
ダウンロードしたdebファイルを展開すると、3つファイルが現れると思います。その中のdata.tar.gzというファイルをさらに展開します。
このファイルの中に、tabcmdを実行するために必要はスクリプトファイルがあるのですが、その場所はずばり下記画像の通りです。
このファイルをわかりやすい場所にコピーしておきましょう(今後tabcmdを実行する時はこのスクリプトを使用するため)。
スクリプトを使用してtabcmdを実行する
結論から言うと、このスクリプトの実行がそのままtabcmdの実行となります。ですので、とりあえず何も考えずにそのまま実行してみます。
$ ./tabcmd You must accept the End User License Agreement (EULA) using --accepteula. Canceling. You can find the EULA in /opt/tableau/tabcmd
怒られました。「TableauのEULA(使用許諾契約)に同意しないとダメやで」とのことです。ここのメッセージ通り、--accepteulaを付与して実行してみましょう。
$ ./tabcmd --accepteula Tableau Server Command Line Utility -- 20182.18.0627.2230 tabcmd help -- tabcmd コマンドのヘルプ tabcmd help <a> -- 特定のコマンドのヘルプを表示 tabcmd help commands -- 利用可能なすべてのコマンドをリスト</a> tabcmd help <a> | commands コマンド オプション: グローバル オプション: --[no-]cookie サインイン時にセッション ID を保存しません。後続のコマンドを実行する際には、再度サインインが必要になります。指定しない場合 、既定ではセッション ID が保存されます -c,--use-certificate クライアント証明書を使用してサインインしてください -h,--help tabcmd のヘルプを表示 --no-certcheck SSL 証明書を検証しない --no-prompt パスワードの入力を求めない --no-proxy HTTP プロキシを使用しない -p,--password 指定された Tableau Server パスワードを使用 --password-file ファイルから Tableau Server パスワードを読み込む -s,--server 指定された Tableau Server URL を使用します。プロトコルが指定されていない場合は、http:// であると見なされます -t,--site 指定した Tableau Server サイトを使用します。空の文字列 (ʼʼ) を指定すると、既定のサイトが強制的に使用されます --timeout サーバーがコマンドの処理が完了するまで待機する時間を秒単位で指定します。既定では、サーバーから 応答が返ってくるまで待機します -u,--username 指定された Tableau Server ユーザー名を使用 -x,--proxy 指定された HTTP プロキシを使用 ```</a> tabcmdの実行に成功しました。実際の操作にあたる部分は何も記述していないため、各ヘルプが表示されました。では、ここからは実際にtabcmdが実行できるか見てみたいと思います。 ## tabcmdを使用してみる ### ログイン tabcmdは、まず最初にログインする必要があります。
$ ./tabcmd --accepteula login -s http://xxxxxxxx.com --username xxxxxx ===== 新しいセッションを作成しています ===== Server: http://xxxxxxxx.com ===== Username: xxxxxx パスワード: ===== サーバーに接続しています... ===== サインインしています... ===== 正常に終了しました
<br />Tableau Serverのドメイン(又はIPアドレス)とユーザー名を指定してログインコマンドを実行します。途中でパスワードを聞かれるので、間違いなく入力するとログインが完了します。基本的にこのログインが終わった後、改めて実行したいtabcmdを入れていきます。 ### グループを作成する 今回は比較的簡単に実行できる(かつ確認も簡単)グループ作成をやってみます。
$ ./tabcmd creategroup "テストグループ" ===== 前のセッションを続行しています ===== Server: http://xxxxxxxx.com ===== Username: xxxxxx ===== グループ ʼテストグループʼ をサーバー上で作成しています... ===== 正常に終了しました
<br />コマンドの内容は、もう見たまんまです。では、実際にTableau Serverを確認してみましょう。 <img class="alignnone size-medium wp-image-358332" src="https://dev.classmethod.jp/wp-content/uploads/2018/09/4-640x298.png" alt="" width="640" height="298" /> ちゃんと作成されていますね。 ### ログアウト コマンドの実行が一通り終わったら、ログアウトしておきましょう。
$ ./tabcmd --accepteula logout -s http://xxxxxxxx.com ===== redirecting to http://xxxxxxxx.com ===== サインアウトしました ```
おわりに
普段使用している端末がMacで、Tableau Serverの作業をコマンドでスパスパ実行したい…というユーザーにはお役立ちするTipsだったのではないでしょうか。